package javase.CollectionAndMap.generic;

import java.util.ArrayList;

/**
 * 泛型
 * 1.概念：不确定数据类型 ， 在类或者接口中预支引用数据类型
 * 2.好处：
 *   2.1 避免运行期的ClassCastException类型转换异常，而将问题提前至编译期，会编译报错
 *   2.2 避免强制转换
 *   2.3 类 、 接口中使用了泛型后，带来可拓展性 ， 例如：IDao 、 ArrayList
 */
public class GenericDemo1 {

    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        //list.add("aaa");
        for (Integer integer : list) {
            System.out.println(integer);
        }

        ArrayList<Object> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add("aaa");    //ClassCastException: java.lang.String cannot be cast to java.lang.Integer
        list1.add(false);
        for (Object o : list1) {
            Integer integer = (Integer) o;
            System.out.println(integer);
        }
    }

}
